package com.ruoyi.project.comp.work.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;

/**
 * 作品对象 comp_work
 *
 * @author ruoyi
 * @date 2025-11-05
 */
public class CompWork extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 作品ID，主键
     */
    private Long id;

    /**
     * 作品标题
     */
    @Excel(name = "作品标题")
    private String title;

    /**
     * 参赛用户ID（关联用户表）
     */
    @Excel(name = "参赛用户ID", readConverterExp = "关=联用户表")
    private Long participantUserId;

    /**
     * 参赛时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "参赛时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date participateTime;

    /**
     * 学生评委成绩（保留两位小数）
     */
    @Excel(name = "学生评委成绩", readConverterExp = "保=留两位小数")
    private BigDecimal studentScore;

    /**
     * 教师评委成绩（保留两位小数）
     */
    @Excel(name = "教师评委成绩", readConverterExp = "保=留两位小数")
    private BigDecimal teacherScore;

    /**
     * 大众点评成绩（保留两位小数）
     */
    @Excel(name = "大众点评成绩", readConverterExp = "保=留两位小数")
    private BigDecimal publicScore;

    /**
     * 记录创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /**
     * 记录更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /**
     * 作品名称
     */
    @Excel(name = "作品名称")
    private String workName;

    /**
     * 作品封面存储路径
     */
    @Excel(name = "作品封面存储路径")
    private String workCover;

    /**
     * 作品简介
     */
    @Excel(name = "作品简介")
    private String workIntro;

    /**
     * 联系人姓名
     */
    @Excel(name = "联系人姓名")
    private String contactName;

    /**
     * 审核状态
     */
    @Excel(name = "审核状态")
    private Long status;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String workScript;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String workVideo1;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String workVideo2;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String workSpeech;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String workOther;

    private BigDecimal totalScore;

    private Integer lookCount;




    private Integer index;
    private Integer likeCount;
    private Integer shareCount;

    private Integer commentCount;


    public Integer getCommentCount() {
        return commentCount;
    }

    public void setCommentCount(Integer commentCount) {
        this.commentCount = commentCount;
    }

    public Integer getLikeCount() {
        return likeCount;
    }

    public void setLikeCount(Integer likeCount) {
        this.likeCount = likeCount;
    }

    public Integer getShareCount() {
        return shareCount;
    }

    public void setShareCount(Integer shareCount) {
        this.shareCount = shareCount;
    }

    public Integer getLookCount() {
        return lookCount;
    }

    public void setLookCount(Integer lookCount) {
        this.lookCount = lookCount;
    }

    public Integer getIndex() {
        return index;
    }

    public void setIndex(Integer index) {
        this.index = index;
    }

// ====================================== 自定义字段开始 ======================================
    // 在此处添加的自定义字段，重新生成代码时不会被覆盖
    // 示例：
    // private String customField; // 自定义扩展字段
    // ====================================== 自定义字段结束 ======================================


    // ====================================== 自定义方法开始 ======================================
    // 在此处添加的自定义getter/setter或其他方法，重新生成代码时不会被覆盖
    // 示例：
    // public String getCustomField() { return customField; }
    // public void setCustomField(String customField) { this.customField = customField; }
    // ====================================== 自定义方法结束 ======================================


    public BigDecimal getTotalScore() {
        return totalScore;
    }

    public void setTotalScore(BigDecimal totalScore) {
        this.totalScore = totalScore;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public void setParticipantUserId(Long participantUserId) {
        this.participantUserId = participantUserId;
    }

    public Long getParticipantUserId() {
        return participantUserId;
    }

    public void setParticipateTime(Date participateTime) {
        this.participateTime = participateTime;
    }

    public Date getParticipateTime() {
        return participateTime;
    }

    public void setStudentScore(BigDecimal studentScore) {
        this.studentScore = studentScore;
    }

    public BigDecimal getStudentScore() {
        return studentScore;
    }

    public void setTeacherScore(BigDecimal teacherScore) {
        this.teacherScore = teacherScore;
    }

    public BigDecimal getTeacherScore() {
        return teacherScore;
    }

    public void setPublicScore(BigDecimal publicScore) {
        this.publicScore = publicScore;
    }

    public BigDecimal getPublicScore() {
        return publicScore;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() {
        return updatedAt;
    }

    public void setWorkName(String workName) {
        this.workName = workName;
    }

    public String getWorkName() {
        return workName;
    }

    public void setWorkCover(String workCover) {
        this.workCover = workCover;
    }

    public String getWorkCover() {
        return workCover;
    }

    public void setWorkIntro(String workIntro) {
        this.workIntro = workIntro;
    }

    public String getWorkIntro() {
        return workIntro;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public String getContactName() {
        return contactName;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Long getStatus() {
        return status;
    }

    public void setWorkScript(String workScript) {
        this.workScript = workScript;
    }

    public String getWorkScript() {
        return workScript;
    }

    public void setWorkVideo1(String workVideo1) {
        this.workVideo1 = workVideo1;
    }

    public String getWorkVideo1() {
        return workVideo1;
    }

    public void setWorkVideo2(String workVideo2) {
        this.workVideo2 = workVideo2;
    }

    public String getWorkVideo2() {
        return workVideo2;
    }

    public void setWorkSpeech(String workSpeech) {
        this.workSpeech = workSpeech;
    }

    public String getWorkSpeech() {
        return workSpeech;
    }

    public void setWorkOther(String workOther) {
        this.workOther = workOther;
    }

    public String getWorkOther() {
        return workOther;
    }


    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("title", getTitle())
                .append("participantUserId", getParticipantUserId())
                .append("participateTime", getParticipateTime())
                .append("studentScore", getStudentScore())
                .append("teacherScore", getTeacherScore())
                .append("publicScore", getPublicScore())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .append("workName", getWorkName())
                .append("workCover", getWorkCover())
                .append("workIntro", getWorkIntro())
                .append("contactName", getContactName())
                .append("status", getStatus())
                .append("workScript", getWorkScript())
                .append("workVideo1", getWorkVideo1())
                .append("workVideo2", getWorkVideo2())
                .append("workSpeech", getWorkSpeech())
                .append("workOther", getWorkOther())
                // ====================================== 自定义toString开始 ======================================
                // 手动添加自定义字段的toString内容，例如：
                // .append("customField", getCustomField())
                // ====================================== 自定义toString结束 ======================================
                .toString();
    }
}